from datetime import datetime, date, timedelta, time, timezone
import time
# 1、获取当前时间的时间戳
t = time.time()
print("获取当前时间的时间戳：",t)

# 2、获取当前时间元组
t = time.localtime()
print("获取当前时间元组：",t)

# 3、获取当前时间的字符串
# 本地时间
t1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print("本地时间：",t1)
t2 = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
print("本地时间：",t2)
# utc时间：就是0时区的区时,比北京时间晚8小时
t3 = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
t4 = time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())
print("utc时间：",t3)
print("utc时间：",t4)
# 4、获取时间对象
# 获取当前日期和时间 datetime
t = datetime.now()
print("获取当前日期和时间 datetime：",t)
# 获取当前日期 date
t1 = datetime.now().date()
print("获取当前日期 date：",t1)
# 获取当前时间 time
t2 = datetime.now().time()
print("获取当前时间 time：",t2)
t = datetime.now() - timedelta(days=3)
print("当前日期和时间前三天：",t)

# 1、时间戳与时间元组
# 时间戳 -> 时间元组
t = time.localtime(1525681106.08)
print("时间戳 -> 时间元组：",t)

# 时间元组 -> 时间戳
t = time.mktime(time.localtime())
print("时间元组 -> 时间戳：",t)

# 2、时间元组与字符串
# 时间元组 -> 字符串
t = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
print("时间元组 -> 字符串：",t)

# 字符串 ->  时间元组
t = time.strptime("2018-01-07 17:26:24","%Y-%m-%d %H:%M:%S")
print("字符串 ->  时间元组：",t)

# 3、时间戳与字符串
# 时间戳 -> 字符串
t = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(1525681106.08))
print("时间戳 -> 字符串：",t)

t = datetime.fromtimestamp(1525681106.08).strftime("%Y-%m-%d %H:%M:%S")
print("字符串格式化：",t)

# 字符串 -> 时间戳
t = time.mktime(time.strptime("2018-01-07 17:26:24","%Y-%m-%d %H:%M:%S"))
print("字符串 -> 时间戳：",t)

# 4、时间戳与datetime对象
# 时间戳 -> datetime对象
t = datetime.fromtimestamp(1525681106.08)
print("时间戳 -> datetime对象：",t)

# 2018-05-07 16:18:26.080000
# UTC
t = datetime.utcfromtimestamp(1525681106.08)
print("UTC时间戳 -> datetime对象：",t)

# 2018-05-07 08:18:26.080000
# datetime对象 -> 时间戳
t = time.mktime(datetime.now().timetuple())
print("datetime对象 -> 时间戳：",t)
# 不过要注意的是time是从1900开始计算的。而datetime包含1-9999的范围

# 5、时间元组与datetime对象
# 时间元组对象 -> datetime对象
t = datetime.fromtimestamp(time.mktime(time.localtime()))
print("时间元组对象 -> datetime对象：",t)

# datetime对象 -> 时间元组对象
t = datetime.now().timetuple()
print("datetime对象 -> 时间元组对象：",t)

# 6、字符串与datetime对象
# str字符串 -> datetime对象 
t = datetime.strptime("2018-01-07 17:26:24", "%Y-%m-%d %H:%M:%S")
print("str字符串 -> datetime对象：",t)

# datetime对象 -> str字符串
t = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print("datetime对象 -> str字符串：",t)

# 7、datetime, data, time 对象之间转换
# datetime对象 -> date对象
t1 = datetime.now().date()
print("datetime对象 -> date对象：",t)

# datetime对象 -> time对象
t2 = datetime.now().time()
print("datetime对象 -> time对象：",t)

# date对象 + time对象 -> datetime对象
t = datetime.combine(t1, t2)
# <type 'datetime.datetime'>
print("date对象 + time对象 -> datetime对象：",t)

# 8、date对象与时间戳
# 时间戳  ->  date对象
t = date.fromtimestamp(time.time())
print("时间戳  ->  date对象：",t)
